/**
 * AJAX工具类
 */
const AjaxUtils = {
    /**
     * 统一处理AJAX请求
     * @param {Object} options 选项
     * @param {string} options.url 请求URL
     * @param {string} options.type 请求类型 GET/POST/PUT/DELETE
     * @param {Object} options.data 请求数据
     * @param {Function} options.success 成功回调
     * @param {Function} options.error 错误回调
     */
    request: function(options) {
        const defaultOptions = {
            type: 'GET',
            contentType: 'application/json',
            dataType: 'json',
            success: function(res) {
                if (res.code === 0) {
                    layer.msg(res.message || '操作成功');
                    if (options.callback) {
                        options.callback(res.data);
                    }
                } else {
                    layer.msg(res.message || '操作失败');
                }
            },
            error: function(xhr, status, error) {
                layer.msg('请求失败：' + (xhr.responseJSON?.message || error || status));
            }
        };
        
        const ajaxOptions = Object.assign({}, defaultOptions, options);
        
        // 如果是对象数据，转为JSON字符串
        if (ajaxOptions.data && ajaxOptions.contentType === 'application/json' && 
            typeof ajaxOptions.data === 'object') {
            ajaxOptions.data = JSON.stringify(ajaxOptions.data);
        }
        
        // 发送请求
        $.ajax(ajaxOptions);
    },
    
    /**
     * 获取所有学生
     * @param {Function} callback 回调函数
     */
    getAllStudents: function(callback) {
        this.request({
            url: '/api/students',
            callback: callback
        });
    },
    
    /**
     * 获取单个学生
     * @param {number} id 学生ID
     * @param {Function} callback 回调函数
     */
    getStudent: function(id, callback) {
        this.request({
            url: '/api/students/' + id,
            callback: callback
        });
    },
    
    /**
     * 添加学生
     * @param {Object} student 学生对象
     * @param {Function} callback 回调函数
     */
    addStudent: function(student, callback) {
        this.request({
            url: '/api/students',
            type: 'POST',
            data: student,
            callback: callback
        });
    },
    
    /**
     * 更新学生
     * @param {number} id 学生ID
     * @param {Object} student 学生对象
     * @param {Function} callback 回调函数
     */
    updateStudent: function(id, student, callback) {
        this.request({
            url: '/api/students/' + id,
            type: 'PUT',
            data: student,
            callback: callback
        });
    },
    
    /**
     * 删除学生
     * @param {number} id 学生ID
     * @param {Function} callback 回调函数
     */
    deleteStudent: function(id, callback) {
        this.request({
            url: '/api/students/' + id,
            type: 'DELETE',
            callback: callback
        });
    }
};